import axios from "axios";
import { BaseUrl } from "./request"
import { ElNotification } from "element-plus";
const ExportRequest = axios.create({
  baseURL: BaseUrl,
  transformResponse: [
    function (data) {
      try {
        return JSON.parse(data);
      } catch (err) {
        return data;
      }
    },
  ],
  responseType: 'blob'
});

ExportRequest.interceptors.request.use(
  // 任何所有请求会经过这里
  // config 是当前请求相关的配置信息对象
  // config 是可以修改的
  function (config) {
    const token = window.localStorage.getItem("token");
    // 如果有登录用户信息，则统一设置 token
    if (token) {
      config.headers.Authorization = `${token}`;
    }

    // 然后我们就可以在允许请求出去之前定制统一业务功能处理
    // 例如：统一的设置 token

    // 当这里 return config 之后请求在会真正的发出去
    return config;
  },
  // 请求失败，会经过这里
  function (error) {
    return Promise.reject(error);
  }
);

// 响应拦截器
// Add a response interceptor
ExportRequest.interceptors.response.use(
  function (response) {
    if (response.status === 200) {
      var item = response.headers
      if (item["content-disposition"]) {
        var filename = decodeURI(item["content-disposition"].split(";")[1].split("filename=")[1]);//下载后文件名
        let blob = new Blob([response.data], { type: response.data.type })
        const url = window.URL.createObjectURL(blob);
        const link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', filename);
        document.body.appendChild(link);
        link.click();
      } else {
        ElNotification({
          showClose: true,
          title: "遇到错误",
          message: "文件格式未知",
          type: "error",
        });
      }
    } else {
      ElNotification({
        showClose: true,
        title: "遇到错误",
        message: response.data.message,
        type: "error",
      });
    }
    return response
  }
);

export default ExportRequest;

